
package Homework.Date7_02;

import java.sql.*;
import java.util.ArrayList;
import java.util.List;

/**
 * 1：设计一个DbUtil类，处理相关数据库的操作， 最好用Static方法
 * 
 * @author Y
 *
 */
public class DbUtil {
	private String ur1;
	private static final String driverpack = "com.mysql.jdbc.Driver";

	static {
		load();
	}

	/**
	 * 加载驱动
	 */
	public static void load() {
		try {
			Class.forName(driverpack);
		} catch (ClassNotFoundException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		}

		System.out.println("JDBC驱动加载成功!");
	}

	/**
	 * 进行连接
	 * 
	 * @return
	 */
	public Connection getConnection() {
		Connection con = null;
		try {
			con = DriverManager.getConnection(ur1, "root", "zzq11475@");
		} catch (SQLException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		}
		return con;
	}

	static PreparedStatement ps = null;
	static ResultSet rs = null;

	/**
	 * 增删改
	 */
	public int addDeleteChange(String sql) {
		Connection con = getConnection();
		int re = 0;
		try {
			ps = con.prepareStatement(sql);
			re = ps.executeUpdate();
		} catch (SQLException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		} finally {
			try {
				clone();
			} catch (CloneNotSupportedException e) {
				// TODO 自动生成的 catch 块
				e.printStackTrace();
			}
		}
		return re;
	}

	/**
	 * 查询
	 */
	public ArrayList<Object> select(String sql) {
		ArrayList<Object> list = new ArrayList<Object>();
		Connection con = getConnection();
		try {
			ps = con.prepareStatement(sql);
			rs = ps.executeQuery();
			ResultSetMetaData rsmd = rs.getMetaData();
			int colm = rsmd.getColumnCount();
			while (rs.next()) {
				for (int a = 0; a < colm; a++) {
					list.add(rs.getObject(a));
				}
			}

		} catch (SQLException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		} finally {
			try {
				clone();
			} catch (CloneNotSupportedException e) {
				// TODO 自动生成的 catch 块
				e.printStackTrace();
			}
		}
		return list;
	}

	/**
	 * 资源释放
	 */
	public void close() {
		Connection con = getConnection();
		try {
			if (con != null) {
				con.close();
			}
		} catch (SQLException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		}
		try {
			if (ps != null) {
				ps.close();
			}
		} catch (SQLException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		}
		try {
			if (rs != null) {
				rs.close();
			}
		} catch (SQLException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		}
		System.out.println("关闭成功!");
	}

}
